package com.hundsun.documentripper.service;

import java.util.List;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.hundsun.documentripper.domain.dto.DocumentVersionView;
import com.hundsun.documentripper.domain.pojo.Document;
import com.hundsun.documentripper.domain.pojo.DocumentVersion;
import com.hundsun.documentripper.domain.pojo.File;
import com.hundsun.documentripper.domain.query.DocumentVersionQuery;

/**
 * Note：
 *
 * @author ：mengjw
 * @description：文档接口
 * @date ：Created in 2021/1/26
 */
public interface DocumentService {

    /**
     * 从文件中新增文档
     *
     * @param file
     */
    void insertDocumentFromFile(File file);

    /**
     * 更新文档对象
     *
     * @param document
     * @return
     */
    void updateDocument(Document document);

    /**
     * 根据唯一标识获取文档对象
     *
     * @param uuid
     * @return
     */
    Document getDocumentById(String uuid);

    /**
     * 分页获取文档的版本列表
     *
     * @param documentVersionQuery
     * @return
     */
    IPage<DocumentVersionView> getDocumentVersionListByPage(DocumentVersionQuery documentVersionQuery);

    /**
     * 全量获取文档的版本列表
     *
     * @param documentVersionQuery
     * @return
     */
    List<DocumentVersionView> getDocumentVersionList(DocumentVersionQuery documentVersionQuery);

    /**
     * 新增文档版本
     *
     * @param documentVersion
     */
    void insertDocumentVersion(DocumentVersion documentVersion);

    /**
     * 根据产品的版本获取最新的文档版本
     *
     * @param productVersionUuid
     * @return
     */
    List<DocumentVersion> getLastDocumentVersionByProductVersion(String productVersionUuid);

    /**
     * 更新初始的文档版本
     *
     * @param documentVersion
     * @return
     */
    void updateNewDocumentVersion(DocumentVersion documentVersion);

    /**
     * 根据文件编号删除文档版本
     *
     * @param fileUuid
     * @return
     */
    void deleteDocumentVersionByFile(String fileUuid);

    /**
     * 根据产品版本批量删除文档版本
     *
     * @param productVersionUuid
     * @return
     */
    void deleteDocumentVersionsByProductVersion(String productVersionUuid);

    /**
     * 删除某个产品版本下的文档版本
     *
     * @param productVersionUuid
     * @param uuid
     */
    void deleteDocumentVersionByProductVersion(String productVersionUuid, String uuid);

}